#include <stdio.h>
#include <unistd.h>

#include <time.h>

// 开始计时，返回开始时间
struct timespec start_timer() {
    struct timespec start;
    clock_gettime(CLOCK_MONOTONIC, &start);
    return start;
}


double cal_elapsed_timer(struct timespec* start) {
    struct timespec end;
    clock_gettime(CLOCK_MONOTONIC, &end);

    // 计算秒数差值
    double elapsed = (end.tv_sec - start->tv_sec) * 1000.0;
    // 计算纳秒数差值并转换为毫秒
    elapsed += (end.tv_nsec - start->tv_nsec) / 1000000.0;
    printf("elapsed: %.3f ms\n", elapsed);

    return elapsed;
}

// 示例函数：模拟一些工作
void example_function() {
    // 模拟耗时操作
    sleep(1); // 休眠1秒
}

int main() {
    // 统计example_function的执行时间
    struct timespec start = start_timer();
    example_function();
    cal_elapsed_timer(&start);

    return 0;
}